# 1、编写一个学生类，产生一堆学生对象
# class students():
#     def __init__(self,name,age):
#         self.name = name
#         self.age = age
#     def student(self):
#         return f"姓名:{self.name},年龄:{self.age}"
# p1 = students("刘闯",33)
# p2 = students("刘闯鲨臂",36)
# p3 = students("刘闯沙比",37)
# print(p1.student())
# print(p2.student())
# print(p3.student())

# 2、模仿王者荣耀定义两个英雄类
# class Yoso(object):
#     def __init__(self,name,occupation):
#         self.name = name
#         self.occupation = occupation
# class RuiWin(Yoso):
#     def __init__(self,name,occupation,sex):
#         Yoso.__init__(self,name,occupation)
#         # super().__init__(name,occupation)
#         self.sex = sex
# Yoso1 = Yoso("亚索","战士")
# print(Yoso1.name,Yoso1.occupation)
#
# RuiWin1 = RuiWin("瑞雯","战士","女")
# print(RuiWin1.name,RuiWin1.occupation,RuiWin1.sex)

# 3、创建一个名为"Person"的类，该类具有"姓名"和"年龄"属性。创建一个"say_hello"方法，当调用该方法时，它会打印出"Hello, 我是[姓名]，今年[年龄]岁。"
# class Person():
#     def __init__(self,name,age):
#         self.name = name
#         self.age = age
#     def say_hello(self):
#         return print(f"我是{self.name}，今年{self.age}")
# p1 = Person("刘闯",33)
# p1.say_hello()
# # 4、创建一个名为"BankAccount"的类，该类具有"账户名称"和"余额"属性。创建一个"deposit"方法，该方法接受一个参数表示存款金额，并将其添加到余额中。创建一个"withdraw"方法，该方法接受一个参数表示取款金额，并从余额中减去该金额。确保在取款时检查余额是否足够
# class BankAccount():
#     def __init__(self,Account,balance=32.5):
#         self.Account = Account
#         self.balance = balance
#     def deposit(self,balance):
#         if isinstance(balance,(float,int)) and balance >=0:
#             self.balance += balance
#             print(f"账户名称{self.Account},存入{balance},账户余额{self.balance}")
#     def withdraw(self,balance):
#         if isinstance(balance, (float,int)) and balance >= 0:
#             self.balance -= balance
#             print(f"账户名称{self.Account},取款{balance},账户余额{self.balance}")
#         else:
#             print(f"账户余额不足，当前余额{self.balance}")
#
# account1 = BankAccount("刘闯")
# account1.deposit(100.0)
# account1.withdraw(50)
# 5、创建一个名为"Student"的类，该类具有"姓名"、"年龄"和"成绩"属性。创建一个"get_grade"方法，该方法接受一个参数表示百分制成绩，并根据得分返回相应的等级(例如，90分以上为"A"级，80-89分为"B"级，70-79分为"C"级，60-69分为"D"级，低于60分为"E"级)
# class Student:
#     def __init__(self,name,age,score=0):
#         self.name = name
#         self.age = age
#         self.score = score
#     def get_grade(self):
#         if self.score>100:
#             print("输入的分数不能超过100")
#         elif self.score >= 90:
#             print("评分为A级")
#         elif self.score >= 80:
#             print("评分为B级")
#         elif self.score >= 70:
#             print("评分为C级")
#         elif self.score >= 60:
#             print("评分为C级")
#         else:
#             print("评分为E级")
# stu = Student("刘闯",20,80)
# grade = stu.get_grade()

# 6、创建一个名为"Car"的类，该类具有"品牌"和"颜色"属性。创建一个"start_engine"方法，该方法打印出"启动汽车引擎！"的消息。创建一个"stop_engine"方法，该方法打印出"关闭汽车引擎！"的消息
# class Car():
#     def __init__(self,brand,color):
#         self.brand = brand
#         self.color = color
#     def start_engine(self):
#         print(f"{self.color}{self.brand} 启动汽车引擎")
#     def stop_engine(self):
#         print(f"{self.color}{self.brand} 关闭汽车引擎")
# car = Car('奥迪','黑色')
# car.start_engine()
# car.stop_engine()
# 7、定义一个用户类(User),用户名(username)和密码(password)是这个类的属性。
# (1)实例化两个用户,分别有不同的用户名和密码。
# (2)设计一个方法 修改密码
# class User():
#     def __init__(self,username,password):
#         self.username = username
#         self.password = password
#         print(f"用户名为{self.username}，密码为{self.password}")
#     def Change_the_password(self,new_password):
#         self.password = new_password
#         print(f"用户名为{self.username}，新密码为{new_password}")
# user1 = User("liuchuang",12345)
# user2 = User("wzwzwz",456789)
# user1.Change_the_password(123789)
# 8、有下面的类属性：姓名、年龄、成绩列表[语文，数学，英语]，其中每门课成绩的类型为整数，类的方法如下所述：
# (1)列表项列表项获取学生的姓名。get_name()，返回类型：str。
# (2)获取学生的年龄。get_age()，返回类型：int。
# (3)返回3门科目中最高的分数。get_course()， 返回类型：int。 类定义好之后，可以定义同学测试如下:
# class Student():
#     def __init__(self,name,age,score_list):
#         self.name = name
#         self.age = age
#         self.score_list = score_list
#     def get_name(self):
#         return self.name
#
#     def get_age(self):
#         return self.age
#
#     def get_course(self):
#         return max(self.score_list)
#
# student = Student("张三", 18, [80, 90, 75])
# name1 = student.get_name()
# age1 = student.get_age()
# max = student.get_course()
# print(f"学生姓名：{name1}")
# print(f"学生姓名：{age1}")
# print(f"学生姓名：{max}")


# 9、淘宝商家后台，可以上架商品、下架商品，功能如下：
# 1.1  商品要有名称、sku、价格
# (1) 可以添加商品，商家添加完的商品会存到商品列表
# (2) 可以修改商品信息：名称、sku、价格
# (3) 可以对商品进行下架，下架后的商品不再展示
# class Product:
#     def __init__(self, name, sku, price):
#         self.name = name
#         self.sku = sku
#         self.price = price
#         self.is_active = False  # 商品是否上架的标识，默认为下架状态
#
#     def update_info(self, name, sku, price):
#         self.name = name
#         self.sku = sku
#         self.price = price
#         print("商品信息已更新")
#
#     def deactivate(self):
#         self.is_active = False
#         print("商品已下架")
#
#     def activate(self):
#         self.is_active = True
#         print("商品已上架")
#
#
# class Merchant:
#     def __init__(self, name):
#         self.name = name
#         self.products = []
#
#     def add_product(self, name, sku, price):
#         product = Product(name, sku, price)
#         self.products.append(product)
#         print("商品已添加")
#
#     def update_product(self, product_id, name, sku, price):
#         if product_id < len(self.products):
#             product = self.products[product_id]
#             product.update_info(name, sku, price)
#         else:
#             print("商品不存在")
#
#     def deactivate_product(self, product_id):
#         if product_id < len(self.products):
#             product = self.products[product_id]
#             product.deactivate()
#         else:
#             print("商品不存在")
#
#     def activate_product(self, product_id):
#         if product_id < len(self.products):
#             product = self.products[product_id]
#             product.activate()
#         else:
#             print("商品不存在")
#
#
# # 商家示例
# merchant = Merchant("淘宝商家A")
# merchant.add_product("商品1", "sku001", 100)
# merchant.add_product("商品2", "sku002", 200)
#
# # 修改商品信息
# merchant.update_product(0, "新商品1", "sku001", 150)
#
# # 下架商品
# merchant.deactivate_product(1)
#
# # 上架商品
# merchant.activate_product(1)